package com.neu.architecture.util;

import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * service 层会做什么：1. 利用建筑 id，获取 city 和 name 字段
 * 说明：这是一个读取文件结构的类, 所实现的功能有：
 * 1. 根据 city, name 和所要求的文件夹名称获取
 * 这是一个工具类
 */
@Component
public class FileStructure {

    //@Value("${basePath}")
    private static String basePath;

    @Value("${basePath}")
    public void setBasePath(String basePath) {
        FileStructure.basePath = basePath;
    }

    public static String getBasePath() {
        return basePath;
    }

    public static String getPath(String city, String name, String type) {
        if (name.endsWith("旧址")) {
            name = name.replace("旧址", "");
        }
        city = city.substring(0, 2);
        type = name + type;
        return basePath + "\\" + city + "\\" + name + "\\" + type;
    }

    public static ArrayList<FileItem> traverseDir(File f) {
        ArrayList<FileItem> ret = new ArrayList<>();
        for (File file : Objects.requireNonNull(f.listFiles())) {
            if (file.isDirectory()) {
                ret.add(new FileItem(file.getName(), true, traverseDir(file)));
            } else {
                ret.add(new FileItem(file.getName(), false, null));
            }
        }
        return ret;
    }

    public static ArrayList<String> traverseOneLayer(File f) {
        ArrayList<String> ret = new ArrayList<>();
        for (File file : Objects.requireNonNull(f.listFiles())) {
            ret.add(file.getName());
        }
        return ret;
    }
}